// src/permission.js
import router from './router'
import globalData from '@/plugins/utils/global'
import NProgress from 'nprogress'    // 正确路径
import 'nprogress/nprogress.css'

NProgress.configure({ showSpinner: false })

const whiteList = ['/login', '/register', '/forgot-password'] // 白名单

router.beforeEach(async (to, from, next) => {
  NProgress.start()

  console.log(localStorage.getItem('user'));
  

  // 1. 从localStorage获取用户状态
  const userInfo = JSON.parse(localStorage.getItem('user') || '{}')
  const isLoggedIn = !!userInfo.id
  // 如果localStorage中有用户信息，同步到globalData
  if (isLoggedIn && !globalData.self.id) {
    globalData.updateUser(userInfo)
  }
  const isWhiteList = whiteList.includes(to.path)

  // 2. 已登录状态处理
  if (isLoggedIn) {
    if (isWhiteList) {
      // 已登录访问白名单页面，重定向到首页
      next('/')
      NProgress.done()
    } else {
      // 检查角色权限 (可选)
      if (to.meta.roles && !to.meta.roles.includes(globalData.self.role)) {
        next('/403') // 无权限页面
      } else {
        next() // 正常放行
      }
    }
  }
  // 3. 未登录状态处理
  else {
    if (isWhiteList) {
      next() // 白名单直接放行
    } else {
      // 重定向到登录页，携带redirect参数
      next(`/login?redirect=${encodeURIComponent(to.fullPath)}`)
      NProgress.done()
    }
  }
})

router.afterEach(() => {
  NProgress.done()
})